package com.czk.durant.springframework.core.io;

import cn.hutool.core.lang.Assert;

import java.net.MalformedURLException;
import java.net.URL;

/**
 * 主要是把三种不同类型的资源处理方式进行了包装，分为：判断是否为ClassPath、URL以及文件。
 *
 * @Author:ChenZhangKun
 * @Date: 2021/6/21 9:42
 */
public class DefaultResourceLoader implements ResourceLoader {
    @Override
    public Resource getResource(String location) {
        Assert.notNull(location, "location must not be null");
        if (location.startsWith(CLASSPATH_URL_PREFIX)) {
            // 类路径
            return new ClassPathResource(location.substring(CLASSPATH_URL_PREFIX.length()));
        } else {
            try {
                // 网络
                URL url = new URL(location);
                return new URLResource(url);
            } catch (MalformedURLException e) {
                // 系统
                return new FileSystemResource(location);
            }
        }
    }
}
